/**
 * 逻辑系统注册器
 * 
 * 职责：
 * 1. 集中管理所有逻辑系统
 * 2. 控制逻辑系统的注册顺序
 * 3. 提供逻辑系统的批量注册接口
 * 
 * 使用方式：
 * - 在 WorldSystem.init() 中调用 registerLogicSystems()
 * - 添加新逻辑系统时，只需在此文件中添加，无需修改 WorldSystem
 * 
 * @author AI Assistant
 * @date 2025-12-02
 */

import type { FixedUpdateManager } from "../FixedUpdateManager";
import { logicSystem } from "./logicSystem";
import { Log } from "../../../core/logger/LoggerGlobal";

/**
 * 注册所有逻辑系统
 * 
 * @param manager 固定更新管理器
 */
export function registerLogicSystems(manager: FixedUpdateManager): void {
    Log.styled('⚙️  注册逻辑系统（固定 20 FPS）', 'medium');
    
    // ✅ 按顺序注册逻辑系统
    // 注意：注册顺序决定了系统的执行顺序
    
    manager.registerLogicSystem(logicSystem);
    
    // 后续添加更多逻辑系统...
    // 示例：
    // manager.registerLogicSystem(movementLogicSystem);
    // manager.registerLogicSystem(physicsLogicSystem);
    // manager.registerLogicSystem(aiLogicSystem);
    // manager.registerLogicSystem(combatLogicSystem);
    
    Log.ecs.info('逻辑系统注册完成', {
        count: manager.getLogicSystemCount()
    });
}

/**
 * 条件注册逻辑系统（根据配置）
 * 
 * @param manager 固定更新管理器
 * @param config 配置对象
 */
export function registerLogicSystemsWithConfig(
    manager: FixedUpdateManager,
    config: {
        enableBasicLogic?: boolean;
        // 后续添加更多配置项
        // enableMovement?: boolean;
        // enablePhysics?: boolean;
        // enableAI?: boolean;
    } = {}
): void {
    Log.styled('⚙️  注册逻辑系统（配置模式）', 'medium');
    
    let registeredCount = 0;
    
    // ✅ 根据配置条件注册
    if (config.enableBasicLogic !== false) {
        manager.registerLogicSystem(logicSystem);
        Log.ecs.debug('注册: LogicSystem');
        registeredCount++;
    }
    
    // 后续添加更多条件注册...
    // if (config.enableMovement !== false) {
    //     manager.registerLogicSystem(movementLogicSystem);
    //     Log.ecs.debug('注册: MovementLogicSystem');
    //     registeredCount++;
    // }
    
    Log.ecs.info('逻辑系统注册完成', {
        count: registeredCount
    });
}

